package com.xiaoshuidi.cloud.module.finance.service.invoice;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.finance.controller.admin.invoice.vo.*;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.invoice.FinanceInvoiceApartmentDO;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.invoice.FinanceInvoiceConfigDO;
import com.xiaoshuidi.cloud.module.finance.dal.dataobject.invoice.FinanceInvoiceTaxRateDO;

import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface FinanceInvoiceConfigService {
    Integer save(FinanceInvoiceConfigCreateReqVO reqVO);

    void updateSwitch(FinanceInvoiceConfigSwitchReqVO reqVO);

    void update(FinanceInvoiceConfigUpdateReqVO reqVO);

    FinanceInvoiceConfigDO getById(Integer id);

    void updateTaxRate(FinanceInvoiceFeeTaxReqVO reqVO);

    void updateApartment(FinanceInvoiceConfigApartmentReqVO reqVO);

    List<FinanceInvoiceTaxRateDO> getFeeTax(Integer id);

    List<FinanceInvoiceApartmentDO> getApartment(Integer id);

    PageResult<FinanceInvoiceConfigDO> getPage(FinanceInvoiceConfigPageReqVO reqVO);

    List<FinanceInvoiceConfigDO> getAll();

    FinanceInvoiceConfigDO getByApartmentId(Long apartmentId);

    Map<Long, List<Long>> getFeeTaxMap(Collection<Long> apartmentIds);
}
